iT邦幫忙

2022 iThome 鐵人賽

DAY 19
0
AI & Data

親手打造推薦系統系列 第 19

Day19 - FFM 因數分解機的拓展 - 親手打造推薦系統

  • 分享至 

  • xImage
  •  

在做推薦系統時,離散的特徵常會需要做 one-hot,這會導致特徵矩陣非常稀疏。在前幾天我們提到因數分解機 FM,可以在矩陣稀疏的情況下,不只訓練及預測的速度快,表現得也很好。

今天我們要介紹的 FFM 模型,就是基於 FM所發展出來的算法,是 FM 的昇級版。它可以處理更稀疏的數據,做出更精準的預測,使它在 16 年提出後便在各大推薦比賽裡大放異彩,可以算是深度推薦模型出來之前,非常重要的里程碑。

FFM 和 FM 有哪裡不一樣?

比起 FM ,FFM 加入了域 (field) 的概念。這什麼意思呢?

若特徵裡有 3 個顏色:黃色、綠色、藍色,在 FM 的世界裡這就是 3 個獨立的特徵,但在 FFM 的世界裡,它是知道這三個特徵都屬於「顏色」這個「域」裡。

FFM 為什麼需要知道域呢?

回想一下,FM 在做特徵交叉的時候,我們將 2 個特徵同時出現(也叫特徵交叉)的權重 wij,分解成了 <Vi, Vj> ,也就變成 2 個隱向量相乘出來的值。

https://ithelp.ithome.com.tw/upload/images/20221004/20152556leDQbIaTEO.png

這表示在 FM 的世界中,黃色(域為「顏色」)這個特徵遇到 T-shirt(域為「衣服」) 與 遇到杯子(域為「餐具」)特徵時,用到的 隱向量都一樣。

FFM 的作者想到:會不會應該面對不同域的特徵時,做法要不一樣。那是不是該用不同的隱向量呢?

依這思路,他提出了看對方的特徵落在哪一個域裡,我就拿出我對該域的隱向量來用。例如,黃色在面對 T-shirt 時用的隱向量,就會和他面對杯子時不同。

寫成式子就會變成

https://ithelp.ithome.com.tw/upload/images/20221004/20152556HWDOxXD5HN.png

這邊我就先提到它核心原理,細部的求解部份,可以參考FFM原始論文

FFM 準確度提昇的代價

依照這樣的變動,效果好很多,但也不是沒有代價的。先說參數數量,我們這邊指 2 階參數數量。

FM只要 k x n 個參數即可,但因為FFM有域的概念,會變成有 f 個域,則隱向量就要準備 f 份,最後就變成 f x k x n 個。

在時間複雜度上 FM 只要 O(kn) 就可以算出來了,但 FFM 要 O(kn^2)才行。

FFM 的優缺點

優點

  • 引入更多的資訊,可以預測的更精準。
  • 在特徵非常稀疏的情況下,表現很優秀。

缺點

  • 訓練速度真的很慢!

小結

今天介紹了 FFM ,說明了它核心的想法,引入了域的概念後,又如何讓每個域都有自己的隱向量。

但無論是 FM 或 FFM ,也都只考慮到 2 個特徵一起出現的影響,3 個以上一起出現的影響,會因為數量太大,而無法討論。就要等接下來談到用深度學習時,才能有好的辦法解決 3 個以上的問題。

參考:

FFM 原始論文


上一篇
Day18 - 因數分解機計算量變小的原理 - 親手打造推薦系統
下一篇
Day20 - GBDT + LR 是如何找出特徵組合做推薦? - 親手打造推薦系統
系列文
親手打造推薦系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言